package com.boot.mapper;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.boot.entity.*;
import org.apache.ibatis.annotations.Mapper;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Mapper
public interface AdDao extends BaseMapper<Ad> {

	//保存广告
	public int save(Ad ad);

	//获取广告列表
	public List<Ad> getAdsByCountry(HashMap<String ,Object> params);
	public List<Ad> getAdsByProvince(HashMap<String ,Object> params);
	public List<Ad> getAdsByCity(HashMap<String ,Object> params);
	public List<Ad> getAdsByDistrict(HashMap<String ,Object> params);
	public List<Ad> getAdsByTown(HashMap<String ,Object> params);
	
	public List<Ad> getAdsByCountryType(HashMap<String, Object> params);
	public List<Ad> getAdsByProvinceType(HashMap<String, Object> params);
	public List<Ad> getAdsByCityType(HashMap<String, Object> params);
	public List<Ad> getAdsByDistrictType(HashMap<String, Object> params);
	public List<Ad> getAdsByTownType(HashMap<String, Object> params);
	
	public List<Ad> getAdsAuto(HashMap<String, Object> params);
	public List<Ad> getAdsAutoType(HashMap<String, Object> params);
	//获取某条广告详情
	public Ad getAdById(String ad_id);
	//记录广告浏览次数
	public int recordScan(HashMap<String ,Integer> params);

	/** 
	* @Description:获取某条广告信息包括user信息
	* @author dengjb 
	* @date 2017-10-18 上午10:51:09 
	*/
	public Ad getAdInfo(String ad_id);
	
	/**发布一条广告的评论
	 * @param comment
	 * @author yedong
	 * @return 
	 */
	public int publishAdComment(Comment comment);
	
	/**获取本条广告的所有评论
	 * @param adid
	 * @return 返回评论实例（Comment）的集合 
	 */
	public List<Comment> getCommentsByAdId(String adid);
	
	/**对某条评论进行回复
	 * @param commentid某条评论的id
	 * @return 
	 */
	public int publishAdCommentReply(Comment comment);
	
	/**修改某条评论的回复数量(增加1)
	 * @param id
	 * @return
	 */
	public int updateAdCommentNumber(String comment_id);
	
	
	/**评论回复数量减1
	 * @param id
	 * @return
	 */
	public int reduceAdCommentNumber(String comment_id);
	
	/**获取评论的回复
	 * @param commentid评论的id
	 * @return
	 */
	public List<CommentReply> getCommentReplys(Map<String,Object> params);
	
	/**对某条评论进行点赞后修改点赞数量
	 * @param id
	 * @return 返回影响的条目数量
	 */
	public int reduceCommentGoodnumber(String comment_id);
	
	/**对某条评论进行点赞后修改点赞数量
	 * @param id
	 * @return 返回影响的条目数量
	 */
	public int plusCommentGoodnumber(String comment_id);
	
	/**对某条评论的回复进行点赞后修改点赞数量
	 * @param id
	 * @return 返回影响的条目数量
	 */
	public int plusCommentReplyGoodnumber(String comment_reply_id);
	
	/**通过用户的id点赞的实例
	 * @param commentid
	 * @return
	 */
	public Addgood getAddgoodByCommentAndUserId(Addgood paramgood);
	
	/**添加一条点赞
	 * @param addgood
	 * @return
	 */
	public int addAddgood(Addgood addgood);
	
	/**
	 * 删除某条点赞
	 * @param addgood
	 * @return
	 */
	public int removeAddgood(Addgood addgood);
	
	/**通过关键字来获取广告
	 * @param params
	 * @return
	 */
	public List<Ad> getAdsByKeyword(HashMap<String, Object> params);
	
	public List<Ad> getCountryAdsByKeyword(HashMap<String, Object> params);
	
	public List<Ad> getProvinceAdsByKeyword(HashMap<String, Object> params);
	
	public List<Ad> getCityAdsByKeyword(HashMap<String, Object> params);
	
	public List<Ad> getDistrictAdsByKeyword(HashMap<String, Object> params);
	
	public List<Ad> getTownAdsByKeyword(HashMap<String, Object> params);
	
	
	/**获取广告的第二种方式
	 * @param params
	 * @return
	 */
	public List<Ad> getAdsBySecondType(HashMap<String, Object> params);
	
	/**获取广告的第三种方式
	 * @param params
	 * @return
	 */
	public List<Ad> getAdsByThirdType(HashMap<String, Object> params);
	
	/**删除自己的某条评论
	 * @param commentid
	 * @return
	 */
	public int deleteCommentById(String comment_id);
	
	/**删除当前评论的回复
	 * @param commentid //某条评论的ID号
	 * @return
	 */
	public int deleteReplys(String comment_id);

	/**
	 * 筛选符和条件的用户
	 * @param map
	 * @return
	 */
	public List<User> getUsersByArg(HashMap<String, String> map);

	/**
	 * 修改广告的审核状态为待审核
	 * @param ad_id
	 */
	public void makeAdNeedCheck(String ad_id);
	
	

	/**
	 * 修改事件推送的数量
	 * @param ad
	 */
	public int updateNumber(Ad ad);

	/**
	 * 根据区县名称获取代码
	 * @param map
	 * @return
	 */
	public Area getAreasByProvinceName(Map<String, String> map);

	/**
	 * 根据市的名称及省的代码获取市
	 * @param map
	 * @return
	 */
	public Area getAreaByCityName(Map<String, String> map);

	/**
	 * 根据区县的名字及省市代码获取区县代码
	 * @param map
	 * @return
	 */
	public Area getAreaByDistrictName(Map<String, String> map);

	/**
	 * 当前的广告点击数量增加1
	 * @param ad_id
	 */
	public void increaseAdClicks(String ad_id);

	/**
	 * 获取评论
	 * @param params
	 * @return
	 */
	public List<Comment> getComments(Map<String, Object> params);

	/**
	 * 删除指定的某条评论回复
	 * @return
	 */
	public int deleteCommentReply(String comment_reply_id);

	/**
	 * 收藏
	 * @param collection
	 * @return
	 */
	public int collectAdDao(CollectionAd collection);

	/**
	 * 获取收藏
	 * @param collection
	 * @return
	 */
	public CollectionAd getCollection(CollectionAd collection);

	/**
	 * 删除收藏
	 * @param collection
	 * @return
	 */
	public int deleteCollection(CollectionAd collection);
	
	/**
	 * 评论数量加1
	 * @param ad_id
	 * @return
	 */
	public int increateCommentNumber(String ad_id);
	
	/**
	 * 评论数量减1
	 * @param ad_id
	 * @return
	 */
	public int reduceCommentNumber(String ad_id);

	/**
	 * 减少评论的回复的点赞数量
	 * @param comment_reply_id
	 */
	public int reduceCommentReplyGoodnumber(String comment_reply_id);
	
	/**
	 * 添加举报
	 * @param report
	 * @return
	 */
	public int addReport(Report report);

	/**
	 * 获取举报
	 * @param paramReport
	 * @return
	 */
	public Report getReport(Report report);
	
}
